/*
 * DataContainer.h
 *
 *      Author: Jerome RD Soine and Christoph A Brand
 *      Institution: Schwarz goup, Institute for Theoretical Physics, Heidelberg University, Germany
 */

#ifndef DATACONTAINER_H_
#define DATACONTAINER_H_

#include <fstream>
#include <string>
#include <vector>
#include <exception>
#include "Displacement.h"
#include "../../core/utility/AbstractDataContainer.h"
#include <lac/vector.h>
#include <base/point.h>

using namespace std;

class DataContainer : public AbstractDataContainer
{
public:
	DataContainer(string);

	Displacement get_displacement_object(unsigned int);

	unsigned int get_number_of_datapoints(){return (*displacements).size();};

	unsigned int get_n_data_points() {return get_number_of_datapoints();};

	void write_displacments_to_file(string);

	vector<double> get_position(unsigned int data_point);

	vector<double> get_displacement(unsigned int data_point);

private:

	vector<Displacement>* displacements;

	void read_data();

	string filename;

};


#endif /* DATACONTAINER_H_ */
